/* 
 * File:   Fichero.h
 * Author: jesus
 *
 * Created on 11 de junio de 2010, 22:14
 */
#include <iostream>
#include <string>
#include <fstream>
#include <deque>
using namespace std;
#ifndef _FICHERO_H
#define	_FICHERO_H

class ErrArchNoAbierto{};

template <class T>
class Fichero {
    fstream f;
    deque<T *> datos;
public:
    Fichero();
    Fichero(string nombreFich);
    Fichero(const Fichero& orig);
    ~Fichero();
    int ultimaPosicion();
    void cargar();
    long insertarElementoFinal(T &elemento);
    bool eliminarElemento(int pos);


};
template <class T> Fichero<T>::Fichero() {
f.open("fich.dat",ios::in | ios::out);
}

template <class T> Fichero<T>::Fichero(string nombreFich) {
     f.open(nombreFich.c_str(),ios::in | ios::out);
}
template <class T> Fichero<T>::Fichero(const Fichero<T> & orig) {
}
template <class T> Fichero<T>::~Fichero() {
    f.close();
}
template <class T> void Fichero<T>::cargar(){
    int i;

    T elementos[100];

  /*  if( !f ){
            throw ErrArchNoAbierto();
    }*/

    for( int i=0;i<10;i++){
    /*        fDisperso.write((char*)&Cubeta.tam,sizeof(Cubeta.tam));
            fDisperso.write((char*)Cubeta.datos,sizeof(libro)*tamCubeta);*/
    }
}

template <class T> int Fichero<T>::ultimaPosicion(){
    int pos;
    f.seekp(ios_base::end);
    return pos=f.tellp();
}

template <class T> long Fichero<T>::insertarElementoFinal(T &elemento){
    
    long pos=ultimaPosicion();

    f << elemento;
    //f.write(reinterpret_cast<char *>(&elemento),sizeof(T));
    pos=ultimaPosicion();
    return pos+1;
}

template <class T> bool Fichero<T>::eliminarElemento(int pos){
    
    f.seekp(pos);
    T vacio;
    f<<vacio;
    
}



#endif	/* _FICHERO_H */

